package w83a.w83aOperacionesPaso.w83aActas;

import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.json.JSONObject;

import w83a.w83aBeans.W83aActasBean;
import w83a.w83aBeans.W83aListaDelegadosBean;
import w83a.w83aBeans.W83aListaDiferenciasBean;
import w83a.w83aBeans.W83aListaEscrutiniosBean;
import w83a.w83aUtilidades.W83aUtilidadesComunes;
import es.ejie.frmk.presentacion.operacion.paso.Q70ActionPasoOP;
import es.ejie.frmk.presentacion.sesiondatos.Q70ContextoEJIE;

// TODO: Auto-generated Javadoc
/**
 * The Class W83aTablaAgrupacionesOP.java.
 *
 * @author Deusto Sistemas
 */
public class W83aTablaActasNuevasOutOPAction extends Q70ActionPasoOP{

	
	protected void processOP(Q70ContextoEJIE contexto, ActionErrors errores, ActionMapping mapping,
			ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		//Guardamos la accion en el contexto
	}

	protected ActionForward processForward(Q70ContextoEJIE contexto, ActionErrors errors, ActionMapping mapping, 
			ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		W83aActasBean actasBean = (W83aActasBean)contexto.get("w83aNuevaActaBean");
		String action = (String)contexto.get("action");
		HashMap lista=new HashMap();
		Class clase=null;
		List listaVariables = new ArrayList();
		
		boolean tipoLista=false;
		String varClave = "sindicato";
		if(action.equalsIgnoreCase("findEscrutiniosC1")
				||action.equalsIgnoreCase("cargadaEscrutiniosC1")){
			if(contexto.get("w83aListaEscrutiniosC1")!=null){
				lista=(HashMap)contexto.get("w83aListaEscrutiniosC1");
			}
			clase=W83aListaEscrutiniosBean.class;
			tipoLista=true;
			listaVariables = new ArrayList();
			listaVariables.add("sindicato");
			listaVariables.add("descripcionSindicato");
			listaVariables.add("hombres");
			listaVariables.add("mujeres");
			listaVariables.add("numVotos");
		}
		else if(action.equalsIgnoreCase("findEscrutiniosC2")
				||action.equalsIgnoreCase("cargadaEscrutiniosC2")){
			if(contexto.get("w83aListaEscrutiniosC2")!=null){
				lista=(HashMap)contexto.get("w83aListaEscrutiniosC2");
			}
			clase=W83aListaEscrutiniosBean.class;
			tipoLista=true;
			listaVariables = new ArrayList();
			listaVariables.add("sindicato");
			listaVariables.add("descripcionSindicato");
			listaVariables.add("hombres");
			listaVariables.add("mujeres");
			listaVariables.add("numVotos");
		}
		else if(action.equalsIgnoreCase("findDiferenciasC1")
				||action.equalsIgnoreCase("cargadaDiferenciasC1")){
			if(contexto.get("w83aListaDiferenciasC1")!=null){
				lista=(HashMap)contexto.get("w83aListaDiferenciasC1");
			}
			clase=W83aListaDiferenciasBean.class;
			tipoLista=true;
			listaVariables = new ArrayList();
			listaVariables.add("sindicato");
			listaVariables.add("descripcionSindicato");
			listaVariables.add("hombres");
			listaVariables.add("mujeres");
			
		}
		else if(action.equalsIgnoreCase("findDiferenciasC2")
				||action.equalsIgnoreCase("cargadaDiferenciasC1")){
			if(contexto.get("w83aListaDiferenciasC2")!=null){
				lista=(HashMap)contexto.get("w83aListaDiferenciasC2");
			}
			clase=W83aListaDiferenciasBean.class;
			tipoLista=true;
			listaVariables = new ArrayList();
			listaVariables.add("sindicato");
			listaVariables.add("descripcionSindicato");
			listaVariables.add("hombres");
			listaVariables.add("mujeres");
			
		}
		else if(action.equalsIgnoreCase("findDelegados")
				||action.equalsIgnoreCase("cargadaDelegado")){
			if(((W83aActasBean)contexto.get("w83aNuevaActaBean")).getListaDelegados()!=null){
				lista=((W83aActasBean)contexto.get("w83aNuevaActaBean")).getListaDelegados();
			}
			/*if(contexto.get("w83aListaDelegados")!=null){
				lista=(HashMap)contexto.get("w83aListaDelegados");
			}*/
			clase=W83aListaDelegadosBean.class;
			tipoLista=true;
			listaVariables = new ArrayList();
			
			listaVariables.add("colegio");
			listaVariables.add("dni");
			listaVariables.add("apellido1");
			listaVariables.add("apellido2");
			listaVariables.add("nombre");
			listaVariables.add("sexo");
			listaVariables.add("sindicato");
			listaVariables.add("fechaAlta");
			listaVariables.add("fechaBaja");
			listaVariables.add("motivoBaja");
			listaVariables.add("dniSustituto");
			
			varClave = "dni";
		}
			if(tipoLista){
				
				int num_paginas = lista.size()/Integer.parseInt(actasBean.getTotal());
				
				
				if(lista.size()%Integer.parseInt(actasBean.getTotal())>0){
					num_paginas++;
				}
				actasBean.setRows(String.valueOf(num_paginas));
				
				
//				Collections.sort(lista,new W83aListaDelegadosBeanComparator());
				
				Map miTreeMap = new TreeMap();
				miTreeMap.putAll(lista);
				
				
				String jJson = W83aUtilidadesComunes.procesarHashMap(lista,listaVariables,varClave,clase, actasBean);
				response.setContentType("text/javascript;charset=iso-8859-1");
				response.setHeader("Pragma", "cache");
				response.setHeader("Expires", "0");
				response.setHeader("Cache-Control", "private");
				response.setStatus(HttpServletResponse.SC_OK);
				PrintWriter out = response.getWriter();
				out.print(jJson);
				out.flush();
			}
			else
			{
				JSONObject jsonObject = new JSONObject();
				jsonObject.put("existe", "no");
				jsonObject.put("registrada", "si");
				jsonObject.put("baja", "no");
				jsonObject.put("codCentroTotal", "");
				jsonObject.put("actaTotal", "si");
				jsonObject.put("version", actasBean.getVersion());
				jsonObject.put("validada", actasBean.getValidada());
				if(request.getParameter("action").equalsIgnoreCase("findActas")){
					if(actasBean.getDuplicada().equals("true")){
						if(StringUtils.isEmpty(actasBean.getNumRegDefinitivo())){
							jsonObject.put("registrada", "no");
						}
						if(!StringUtils.isEmpty(actasBean.getFechaBaja())){
							jsonObject.put("baja", "si");
						}
						if(!StringUtils.isEmpty(actasBean.getCodCentroTrabajo())){
							jsonObject.put("codCentroTotal", actasBean.getCodCentroTrabajo());
						}
						if(!StringUtils.isEmpty(actasBean.getNumActaTotal())){
							jsonObject.put("actaTotal", "no");
						}
						jsonObject.put("existe", "si");
					}
				}
				response.setContentType("text/javascript;charset=iso-8859-1");
				response.setHeader("Pragma", "cache");
				response.setHeader("Expires", "0");
				response.setHeader("Cache-Control", "private");
				response.setStatus(HttpServletResponse.SC_OK);
				PrintWriter out = response.getWriter();
				out.print(jsonObject.toString());
				out.flush();
		}
			
	
		
		return null;
	}
	


}
